package cn.zzz.openplatform.common.model;

import cn.hutool.core.util.ReflectUtil;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * 搞个请求和响应绑定的
 *
 * @param <T> : OpenApiResponse
 */
public interface OpenApiRequest<T> {
    Class<T> getResponseClass();

    String getUrl();

    default Map<String, Object> buildParams() {
        Map<String, Object> params = new HashMap<>();
        Arrays.stream(ReflectUtil.getFields(this.getClass())).forEach(field -> {
            Object value = ReflectUtil.getFieldValue(this, field);
            if (value != null) {
                params.put(field.getName(), value);
            }
        });
        return params;
    }
}